<%@page import="study.itwill.jsp.MultipartBox.FileInfo"%>
<%@page import="study.itwill.jsp.MultipartBox"%>
<%@page import="study.itwill.team5.admin.AdminItem"%>
<%@page import="study.itwill.jsp.WebHandler"%>
<%@page import="study.itwill.team5.house.RoomItem"%>
<%@page import="java.util.ArrayList"%>
<%@page import="study.itwill.team5.house.House"%>
<%@page import="study.itwill.common.PatternChecker"%>
<%@page import="study.itwill.common.DBHandler"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true"%>
<%@ include file="../session.jsp"%>
<%@ include file="../dbcon.jsp"%>
<%
	MultipartBox mbox = MultipartBox.getInstance();
	
	// 업로드는 이 한 줄로 끝~!!!
	ArrayList<FileInfo> finfo = mbox.upload(request);

	PatternChecker checker = PatternChecker.getInstance();
	
	// 모든 파라미터 받기
	int seq = mbox.getInt("house_seq");
	String name = mbox.getValue("name");
	String address1 = mbox.getValue("address1");
	String address2 = mbox.getValue("address2");
	String address3 = mbox.getValue("address");
	String address4 = mbox.getValue("address4");
	String email = mbox.getValue("email");
	String homepage = mbox.getValue("homepage");
	String info = mbox.getValue("info");
	String lat = mbox.getValue("lat");
	String lon = mbox.getValue("lng");
	int house_city_seq = mbox.getInt("house_city_seq");
	String[] tel = mbox.getValues("tel[]");
	String[] room_name = mbox.getValues("room_name[]");
	String[] limit_person = mbox.getValues("limit_person[]");
	String[] off_price = mbox.getValues("off_price[]");
	String[] on_price = mbox.getValues("on_price[]");
	
	// 삭제할 파일에 대한 체크상태값
	String[] delete_file = mbox.getValues("delete_file");
	
	if (seq == -1) {
		db.disconnect();
		web.goPage(null, "민박 일련번호 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	if (!checker.isValue(name)) {
		db.disconnect();
		web.goPage(null, "이름 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	if (!checker.isValue(address1) || !checker.isValue(address2) || !checker.isValue(address3) || !checker.isValue(address4)) {
		db.disconnect();
		web.goPage(null, "주소 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	if (!checker.isValue(email) || !checker.isEmail(email)) {
		db.disconnect();
		web.goPage(null, "이메일 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	if (!checker.isValue(homepage)) {
		db.disconnect();
		web.goPage(null, "홈페이지 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	if (!checker.isValue(info)) {
		db.disconnect();
		web.goPage(null, "상세정보 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	if (!checker.isValue(lat) || !checker.isValue(lon)) {
		db.disconnect();
		web.goPage(null, "위도/경도 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	if (house_city_seq == -1) {
		db.disconnect();
		web.goPage(null, "시티 일련번호 파라미터가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	info = info.replace("\n", "<br/>");
	
	int[] n_limit_person = new int[limit_person.length];
	for (int i=0; i<limit_person.length; i++) {
		n_limit_person[i] = Integer.parseInt(limit_person[i]);
	}
	
	int[] n_off_price = new int[off_price.length];
	for (int i=0; i<off_price.length; i++) {
		n_off_price[i] = Integer.parseInt(off_price[i]);
	}
	
	int[] n_on_price = new int[on_price.length];
	for (int i=0; i<on_price.length; i++) {
		n_on_price[i] = Integer.parseInt(on_price[i]);
	}
%>
<%
	ArrayList<RoomItem> room_item = new ArrayList<RoomItem>();
	for (int i=0; i<room_name.length; i++) {
		RoomItem item = new RoomItem(room_name[i], n_limit_person[i], n_off_price[i], n_on_price[i]);
		room_item.add(item);
	}

	double n_lat = Double.parseDouble(lat);
	double n_lon = Double.parseDouble(lon);
	
	/** 데이터 저장 */
	House house = new House();
	boolean result = house.editHouse(seq, name, house_city_seq, address1, address2, address3, address4, 
			email, homepage, info, n_lat, n_lon, tel, finfo, room_item, delete_file);
	if (result == false) {
		db.disconnect();
		web.goPage(null, "비밀번호가 잘못되었습니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	/** 접속 해제 */
	db.disconnect();
	
	if (seq < 1) {
		web.goPage(null, "데이터 저장에 실패했습니다. 관리자에게 문의 바랍니다.");
		mbox.deleteFiles(finfo);
		return;
	}
	
	// 페이지 강제 이동 (JSP)
	web.goPage("viewHouse.jsp?seq=" + seq, null);
%>